-- -- @Author: baidwwy
local 场景类_战斗自动栏 = class()
local 开启自动 = false
local format = string.format
local tp
local 门派={大唐官府=0xAAAA0001,化生寺=0xAAAA0002,女儿村=0XAAAA0003,天机城=0XAAAA0004,神木林=0XAAAA0005,天宫=0XAAAA0006,龙宫=0XAAAA0007,五庄观=0XAAAA0008,普陀山=0XAAAA0009,凌波城=0XAAAA0010,女魃墓=0XAAAA0011,无底洞=0XAAAA0012,花果山=0XAAAA0013,阴曹地府=0XAAAA0014,魔王寨=0XAAAA0015,狮驼岭=0XAAAA0016,盘丝洞=0XAAAA0017,方寸山=0XAAAA0018,九黎城=0XAAAA0020}

function 场景类_战斗自动栏:初始化(根)
	self.ID = 102
	self.x = 0-5
	self.y = 300
	self.xx = 0
	self.yy = 0
	self.注释 = "战斗"
	self.可视 = false
	self.可视化 = false
	self.鼠标 = false
	self.焦点 = false
	-- self.可移动 = true
	self.窗口时间 = 0
	local 资源 = 根.资源
	local 按钮 = 根._按钮
	local 自适应 = 根._自适应
	self.资源组 = {
		[0] = 根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00004),
		[1] = 根.资源:载入('UI.wdf',"网易WDF动画",0xAAAA0019),
		[2] = 根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00007), --开启关闭显示
		[3] = 按钮(根._自适应.创建(12,4,78,22,1,3),0,0,4,true,true,"一键自动"),
		[4] = 按钮(根._自适应.创建(12,4,78,22,1,3),0,0,4,true,true,"退出战斗"),

	}
	self.自动组 = {
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00009),
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00009),
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00009),
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00009),
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00009),
	}
	self.智能组 = {
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00008),
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00008),
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00008),
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00008),
		根.资源:载入('UI.wdf',"网易WDF动画",0xAAB00008),
	}
	self.自动显示=true
	self.资源组[2].当前帧=1
	self.资源组[2]:更新纹理()
	self.状态 = "开启"
	tp = 根
	self.第一次 = false
end

function 场景类_战斗自动栏:打开(内容)
	self.可视化 = true
	tp.运行时间 = tp.运行时间 + 1
	self.窗口时间 = tp.运行时间
	self.自动数据={}
	for n=1,#内容 do
		战斗类.战斗单位[内容[n].id].数据.自动指令=内容[n].自动指令
		战斗类.战斗单位[内容[n].id].数据.自动战斗=内容[n].自动开关
		if 战斗类.战斗单位[内容[n].id].数据.类型 == "角色" then
			self.自动数据[#self.自动数据+1] = {内容[n].id}
			if 内容[n].自动开关 then
		  		self.自动组[#self.自动数据].当前帧=1
				self.自动组[#self.自动数据]:更新纹理()
			else
		    	self.自动组[#self.自动数据].当前帧=0
				self.自动组[#self.自动数据]:更新纹理()
			end
			if 内容[n].智能施法 then
		  		self.智能组[#self.自动数据].当前帧=1
				self.智能组[#self.自动数据]:更新纹理()
			else
		    	self.智能组[#self.自动数据].当前帧=0
				self.智能组[#self.自动数据]:更新纹理()
			end
		else
			self.自动数据[#self.自动数据][2] = 内容[n].id
		end
	end
	self:创建自动素材()
	战斗类.自动开关 = true
end

function 场景类_战斗自动栏:创建自动素材()
	self.玩家组={}
	for i=1,5 do
		if self.自动数据[i] then
			local 编号 = self.自动数据[i][1]
			self.玩家组[i]={[1]={编号=编号}}
			if 门派[战斗类.战斗单位[编号].数据.门派] then
				self.玩家组[i][1].门派=tp.资源:载入("UI.wdf","网易WDF动画",门派[战斗类.战斗单位[编号].数据.门派])
			end
			if 战斗类.战斗单位[编号].数据.自动指令 and 战斗类.战斗单位[编号].数据.自动指令.类型=="法术" then
				local 参数 = 引擎.取技能(战斗类.战斗单位[编号].数据.自动指令.参数)
				self.玩家组[i][1].图标 = tp.资源:载入(参数[6],"网易WDF动画",参数[7])
			elseif 战斗类.战斗单位[编号].数据.自动指令 and 战斗类.战斗单位[编号].数据.自动指令.类型=="攻击" then
				local 参数 = 引擎.取技能("牛刀小试")
				self.玩家组[i][1].图标 = tp.资源:载入(参数[6],"网易WDF动画",参数[7])
			elseif 战斗类.战斗单位[编号].数据.自动指令 and 战斗类.战斗单位[编号].数据.自动指令.类型=="防御" then
				self.玩家组[i][1].图标 = tp.资源:载入("wzife.wdf","网易WDF动画",91393867)
			elseif 战斗类.战斗单位[编号].数据.自动指令 and 战斗类.战斗单位[编号].数据.自动指令.类型=="道具" then
				self.玩家组[i][1].图标 = tp.资源:载入("wzife.wdf","网易WDF动画",2101102727)
			else
				local 参数 = 引擎.取技能("牛刀小试")
				self.玩家组[i][1].图标 = tp.资源:载入(参数[6],"网易WDF动画",参数[7])
			end
			if self.自动数据[i][2] then
				local 编号 = self.自动数据[i][2]
				self.玩家组[i][2]={编号=编号}
				if 战斗类.战斗单位[编号].数据.自动指令 then
					if 战斗类.战斗单位[编号].数据.自动指令.类型=="法术" then
						local 参数 = 引擎.取技能(战斗类.战斗单位[编号].数据.自动指令.参数)
						self.玩家组[i][2].图标 = tp.资源:载入(参数[6],"网易WDF动画",参数[7])
					elseif 战斗类.战斗单位[编号].数据.自动指令.类型=="攻击" then
						local 参数 = 引擎.取技能("牛刀小试")
						self.玩家组[i][2].图标 = tp.资源:载入(参数[6],"网易WDF动画",参数[7])
					elseif 战斗类.战斗单位[编号].数据.自动指令.类型=="防御" then
						self.玩家组[i][2].图标 = tp.资源:载入("wzife.wdf","网易WDF动画",91393867)
					else
						local 参数 = 引擎.取技能("牛刀小试")
						self.玩家组[i][2].图标 = tp.资源:载入(参数[6],"网易WDF动画",参数[7])
					end
				else
					local 参数 = 引擎.取技能("牛刀小试")
					self.玩家组[i][2].图标 = tp.资源:载入(参数[6],"网易WDF动画",参数[7])
				end
			else
				self.玩家组[i][2]={图标=tp.资源:载入("UI.wdf","网易WDF动画",0xAAB00005),偏移x=-55,偏移y=-10}
			end
		else
			self.玩家组[i]={}
			self.玩家组[i][1]={图标=tp.资源:载入("UI.wdf","网易WDF动画",0xAAB00005),偏移x=-55,偏移y=-10}
			self.玩家组[i][2]={图标=tp.资源:载入("UI.wdf","网易WDF动画",0xAAB00005),偏移x=-55,偏移y=-10}
		end
	end
end

function 场景类_战斗自动栏:更新智能(内容)
	local 编号 = 内容.编号
	if 战斗类.战斗单位[编号] then
		for i=1,5 do
			if self.玩家组[i][1].编号 == 编号 then
				if 内容[1] then
					self.智能组[i].当前帧=1
					self.智能组[i]:更新纹理()
				else
					self.智能组[i].当前帧=0
					self.智能组[i]:更新纹理()
				end
				break
			end
		end
	end
end


function 场景类_战斗自动栏:更新自动(内容)
	local 编号 = 内容.编号
	if 战斗类.战斗单位[编号] then
		for i=1,5 do
			if self.玩家组[i][1].编号 == 编号 then
				if 内容[1] then
					self.自动组[i].当前帧=1
					self.自动组[i]:更新纹理()
				else
					self.自动组[i].当前帧=0
					self.自动组[i]:更新纹理()
				end
				break
			end
		end
	end
end

function 场景类_战斗自动栏:更新(dt,x,y)
end

function 场景类_战斗自动栏:显示(dt,x,y)
	if self.自动显示 then
		self.资源组[0]:显示(self.x,self.y)
		for i=1,5 do
		    if self.玩家组[i][1].门派 then
		    	self.玩家组[i][1].门派:显示(self.x-140+i*60-60,self.y-80)
		    	if self.玩家组[i][1].门派:是否选中(x,y) then
		    		local 编号=self.玩家组[i][1].编号
		    		tp.提示:自定义(x,y,"#Y/"..战斗类.战斗单位[编号].数据.名称)
		    	end
		    end
		    self.玩家组[i][1].图标:显示(self.x+15+i*60-60+(self.玩家组[i][1].偏移x or 0),self.y+42+(self.玩家组[i][1].偏移y or 0))
		    if self.玩家组[i][1].图标:是否选中(x,y) then
		    	if self.玩家组[i][1].编号 then
		    		local 编号=self.玩家组[i][1].编号
		    		if 战斗类.战斗单位[编号] and 战斗类.战斗单位[编号].数据.自动指令 then
			    		if 战斗类.战斗单位[编号].数据.自动指令.参数~="" then
			    			tp.提示:自定义(x,y,"#Y/"..(战斗类.战斗单位[编号].数据.自动指令.参数 or "攻击"))
			    		else
			    			tp.提示:自定义(x,y,"#Y/"..战斗类.战斗单位[编号].数据.自动指令.类型)
			    		end
			    	else
			    		tp.提示:自定义(x,y,"#Y/无")
			    	end
		    		if 引擎.鼠标弹起(0) then
			    	    tp.窗口.自动战斗设置类:打开(战斗类.战斗单位[编号].主动技能,战斗类.战斗单位[编号].数据.id,"人物",战斗类.战斗单位[编号].数据.披坚执锐,编号)
			    	end
		    	else
		    		tp.提示:自定义(x,y,"#Y/无")
		    	end
		    end
		    if self.玩家组[i][2].图标:是否选中(x,y) then
		    	if self.玩家组[i][2].编号 then
		    		local 编号=self.玩家组[i][2].编号
		    		if 战斗类.战斗单位[编号].数据.自动指令 then
			    		if 战斗类.战斗单位[编号].数据.自动指令.参数~="" then
			    			tp.提示:自定义(x,y,"#Y/"..(战斗类.战斗单位[编号].数据.自动指令.参数 or "无"))
			    		else
			    			tp.提示:自定义(x,y,"#Y/"..战斗类.战斗单位[编号].数据.自动指令.类型)
			    		end
			    	else
			    		tp.提示:自定义(x,y,"#Y/无")
			    	end
		    		if 引擎.鼠标弹起(0) then
			    	    tp.窗口.自动战斗设置类:打开(战斗类.战斗单位[编号].数据.主动技能,战斗类.战斗单位[编号].数据.id,"宠物",nil,编号)
			    	end
		    	else
		    		tp.提示:自定义(x,y,"#Y/无")
		    	end
		    end
		    self.玩家组[i][2].图标:显示(self.x+15+i*60-60+(self.玩家组[i][2].偏移x or 0),self.y+127+(self.玩家组[i][2].偏移y or 0))
		end
		self.资源组[1]:显示(self.x,self.y)
		self.资源组[3]:更新(x,y)
		self.资源组[3]:显示(self.x+250-65,self.y+90+80)
		self.资源组[4]:更新(x,y)
		self.资源组[4]:显示(self.x+30,self.y+90+80)
		self.资源组[2]:显示(self.x+10,self.y-25)
		for i=1,5 do
			if self.玩家组[i] and self.玩家组[i][1] and self.玩家组[i][1].编号 then
				self.自动组[i]:显示(self.x+10+i*60-20,self.y+30)
				self.智能组[i]:显示(self.x+10+i*60-60,self.y+90)
				if self.智能组[i]:是否选中(x,y) and 引擎.鼠标弹起(左键) then
					local 编号=self.玩家组[i][1].编号
					JGESDK:发送(5513,{编号=编号})
				elseif self.自动组[i]:是否选中(x,y) and 引擎.鼠标弹起(左键) then
					local 编号=self.玩家组[i][1].编号
					JGESDK:发送(5507)
				end
			end
		end
		if self.资源组[2]:是否选中(x,y) and 引擎.鼠标弹起(左键) then
			self.自动显示=false
			self.资源组[2].当前帧=0
			self.资源组[2]:更新纹理()
		elseif self.资源组[4]:是否选中(x,y) and 引擎.鼠标弹起(左键) then
		    JGESDK:发送(401)
		elseif self.资源组[3]:是否选中(x,y) and 引擎.鼠标弹起(左键) then
			JGESDK:发送(5507)
		end
	else
		self.资源组[2]:显示(self.x+10,self.y-25)
		if self.资源组[2]:是否选中(x,y) and 引擎.鼠标弹起(左键) then
			self.资源组[2].当前帧=1
			self.资源组[2]:更新纹理()
			self.自动显示=true
		end
	end
end



function 场景类_战斗自动栏:检查点(x,y)
	if self.资源组[1]:是否选中(x,y) and tp.战斗中 then
		return true
	end
end

function 场景类_战斗自动栏:鼠标动作(x,y)
    if 引擎.鼠标按下(0) and  self.资源组[1]:是否选中(x,y) then
        self:初始移动(x,y)
        self.焦点 = true
    end
    if 引擎.鼠标按住(0) and self.焦点 then
    	self.鼠标 = true
        self:开始移动(x,y)
    else
    	self.鼠标 = false
    	self.焦点 = false
    end
    if 引擎.鼠标弹起(0) then
        self.焦点 = false
    end
end

function 场景类_战斗自动栏:初始移动(x,y)
	tp.运行时间 = tp.运行时间 + 1
	if not self.第一次 then
		tp.运行时间 = tp.运行时间 + 2
		self.第一次 = true
	end
	if not 引擎.场景.消息栏焦点 then
  		self.窗口时间 = tp.运行时间
 	end
	if not self.焦点 then
		tp.场景.战斗.移动窗口 = true
	end
	if self.可视化 then
		self.xx = x - self.x
		self.yy = y - self.y
	end
end

function 场景类_战斗自动栏:开始移动(x,y)
	if self.可视化 and self.鼠标 then
		self.x = x - self.xx
		self.y = y - self.yy
	end
end

return 场景类_战斗自动栏